module.exports = async function() {
	return async function(ctx, next) {
		let raw = ctx.raw || (ctx.raw = {});

		if(ctx.request && ctx.request.body) {
			for(let key in ctx.request.body) {
				raw[key] = ctx.request.body[key];
			}
		}

		if(ctx.req && ctx.req.body) {
			for(let key in ctx.req.body) {
				raw[key] = ctx.req.body[key];
			}
		}

		if(ctx.query) {
			for(let key in ctx.query) {
				raw[key] = ctx.query[key];
			}
		}

		raw._ip = ctx.ip;

		ctx.access = true;

		await next();
	};
};